package com.gitee.huanminabc.dynamicdb.aop.dbswitch;
/**
 * @author huanmin
 * @date 2024/11/22
 */
import com.gitee.huanminabc.dynamicdb.aop.DBSwitch;
import org.springframework.aop.support.StaticMethodMatcherPointcut;
import org.springframework.core.annotation.AnnotatedElementUtils;

import java.lang.reflect.Method;
public class DBSwitchPointCut extends StaticMethodMatcherPointcut {
    @Override
    public boolean matches(Method method, Class<?> targetClass) {
        //匹配 @Pointcut("execution(* com.*.*(..))")这种效果  可以用AntPathMatcher来实现

        // 直接使用spring工具包，来获取method和类上的注解（会找父类上的注解包括接口） 解决默认的aop只能找到当前类上的注解的问题
        return AnnotatedElementUtils.hasAnnotation(method, DBSwitch.class)||AnnotatedElementUtils.hasAnnotation(targetClass, DBSwitch.class);
    }
}
